package com.mindskip.xzs.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mindskip.xzs.domain.BatchTask;
import com.mindskip.xzs.repository.BatchTaskMapper;
import com.mindskip.xzs.service.BatchTaskServer;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

// 标注为Service层的实现类
@Service
public class BatchTaskServerImpl extends ServiceImpl<BatchTaskMapper, BatchTask> implements BatchTaskServer {

    // 根据批次ID获取批次任务
    @Override
    public BatchTask getBatchTaskByBatchId(String batchId) {
        // 创建查询条件包装器
        QueryWrapper<BatchTask> batchTaskQueryWrapper = new QueryWrapper<>();
        // 添加条件为批次ID等于传入的批次ID
        batchTaskQueryWrapper.eq("batch_id", batchId);
        // 返回符合条件的单个批次任务
        return this.baseMapper.selectOne(batchTaskQueryWrapper);
    }

    // 根据任务ID获取所有对应的批次ID
    @Override
    public List<String> getBathIdByTaskId(Integer id) {
        // 创建查询条件包装器
        QueryWrapper<BatchTask> batchTaskQueryWrapper = new QueryWrapper<>();
        // 添加条件为任务ID等于传入的任务ID
        batchTaskQueryWrapper.eq("task_id", id);
        // 用于存储批次ID的列表
        List<String> batchIds = new LinkedList<>();
        // 获取所有符合条件的批次任务
        List<BatchTask> batchTasks = this.baseMapper.selectList(batchTaskQueryWrapper);
        // 如果没有找到符合条件的批次任务，则返回空列表
        if(batchTasks.size() == 0) {
            return new ArrayList<>();
        }
        // 遍历所有批次任务，将每个任务的批次ID添加到列表中
        for (BatchTask batchTask : batchTasks) {
            batchIds.add(batchTask.getBatchId());
        }
        // 返回批次ID列表
        return batchIds;
    }

    // 根据批次ID列表获取所有对应的批次任务
    @Override
    public List<BatchTask> getBatchTaskByBatchIds(List<String> batchIds) {
        // 调用自定义的批次任务查询方法，传入批次ID列表
        return this.baseMapper.getBatchTaskByBatchIds(batchIds);
    }

}
